测试用例


测试框架

NW.js使用三个Python文件作为测试基础框架 . 源代码可以查看test目录中文件 .

NW.js每个测试用例都是一个可以运行的应用 , 所以可以脱离框架手动运行 .

NW.js中 , 测试用例有两种类型 , 分别是自动远程 . 参考测试用例部分的说明 .

通过以下命令运行测试用例:

python test/test.py -t 80 auto
python test/test.py -t 80 remoting

测试用例编写

自动测试

待续

远程测试

远程测试使用ChromeDriver . 通常测试用例需要用户交互 . 参考ChromeDriver测试 .

远程测试需要test.py文件 , 该文件位置为应用的根目录中 .

test.py文件样例:

import time
import os

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("nwapp=" + os.path.dirname(os.path.abspath(__file__)))

driver = webdriver.Chrome(executable_path=os.environ['CHROMEDRIVER'], chrome_options=chrome_options)
time.sleep(1)
try:
    print driver.current_url
    # 该部分增加测试代码以及`assert`断言完成测试
finally:
    driver.quit()

NW.js应用中真实用例 . 通过ChromeDriver , 可以模拟鼠标点击事件 , 输入动作以及DOM元素中的内容 . 例如 , 以下代码 , 点击"Click Me"按钮 , document中增加内容为"success"的DOM标签对象 .

<button id="clickme" onclick="success()">Click Me</button>
<script>
function success() {
    var el = document.createElement('div');
    el.id = 'result';
    el.innerHTML = 'success';
    document.body.appendChild(el);
}
</script>

通过test.py脚本进行测试:

driver.implicitly_wait(10) # 查找标签对象超时时间为10秒

clickme = driver.find_element_by_id('clickme')
clickme.click() # 点击按钮

result = driver.find_element_by_id('result')
assert("success" in result.get_attribute('innerHTML')) # assert "success" is in the element 判断标签内容是否为"success"